package com.prevpn.dto;

import lombok.Data;
import java.util.List;

/**
 * 角色授权应用 DTO - 基于角色名称
 */
@Data
public class RoleAssignResourceDTO {

    /** 用户目录唯一标识，如 local 或 custom01339 */
    private String directoryDomain;

    /** 角色名，如 "role1" */
    private String name;

    /** 应用授权 */
    private ResourceAssign resource;

    /** 应用分类授权 */
    private ResourceGroupAssign resourceGroup;

    @Data
    public static class ResourceAssign {
        /** 操作方式：append / reset / delete，默认 append */
        private String op = "append";
        /** 授权标识类型：id 或 name */
        private String key = "name";
        /** 授权的应用数据 */
        private List<ResourceData> data;
    }

    @Data
    public static class ResourceData {
        /** 应用名或应用 ID */
        private String data;
        /** 授权生效时间，可为时间戳或 yyyy-MM-dd HH:mm:ss */
        private String effectiveTime;
        /** 授权过期时间 */
        private String expireTime;
    }

    @Data
    public static class ResourceGroupAssign {
        /** 操作方式：append / reset / delete */
        private String op = "append";
        /** 授权标识类型：id 或 name */
        private String key = "name";
        /** 授权的应用分类数据 */
        private List<ResourceGroupData> data;
    }

    @Data
    public static class ResourceGroupData {
        /** 应用分类名或 ID */
        private String data;
        /** 授权生效时间 */
        private String effectiveTime;
        /** 授权过期时间 */
        private String expireTime;
    }
}
